把二叉树打印成多行

把二叉树打印成多行

题目描述

从上层到下层从左到右按层输出二叉树

  • 用队列先进先出的性质,从左到右先遍历下层节点,到下层输出的时候,也可以从左到右输出。
  • 需要记录下层节点的个数
  • 需要记录当前层打印节点的个数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function Print(pRoot)
{
// write code here
const queue=[]
const res=[]
if(pRoot==null){
return res;
}
let nextlevel=0;
let curlevel=1;
queue.push(pRoot);
let list=[]
while(queue.length!=0){
const pNode=queue.shift();
list.push(pNode.val)
if(pNode.left!=null){
nextlevel++;
queue.push(pNode.left)
}
if(pNode.right!=null){
nextlevel++;
queue.push(pNode.right)
}
curlevel--;
if(curlevel==0){
res.push(list)
curlevel=nextlevel;
nextlevel=0;
list=[];
}
}
return res;
}